1️⃣ Introducción

Este análisis tiene como objetivo calcular probabilidades condicionales en el dataset Startup Data, respondiendo preguntas como:

Estos cálculos permiten evaluar factores clave que impactan el éxito de una startup y ayudar en la toma de decisiones estratégicas.

2️⃣ Carga de Librerías y Configuración

# 📌 Cargar configuración global
# Contiene rutas de directorios, opciones de visualización y otros parámetros relevantes
install.packages("here",dependencies=TRUE)
library(here)
source(here("reportes/Proy_Startup_Data/00_CONFIGURACION.r"))
## 
## ✅ Todas las librerías necesarias han sido cargadas correctamente.

source(here(“reportes/Proy_Startup_Data/00_CONFIGURACION.r”))



``` r
# 📌 Cargar librerías necesarias
library(here)           # Manejo de rutas dinámicas
library(janitor)        # Limpieza de nombres de columnas
library(summarytools)   # Resumen estadístico detallado
library(ggplot2)        # Gráficos
library(dplyr)          # Manipulación de datos
library(plotly)         # Gráficos Interactivos

# 📌 Configuración de gráficos globales
theme_set(theme_minimal())

# 📌 Cargar scripts de configuración y preprocesamiento

source(here("scripts/utils.r"))
source(here("scripts/1_preprocesamiento_esp_dataset.r"))
source(here("scripts/3_analisis_probabilidad.r"))

3️⃣ Carga y Preprocesamiento de Datos

# 📌 Cargar dataset limpio
dataset_startup <- preprocesar_datos(here("datasets/startup_data_limpio.csv"), "Startup Data")
## 📥 Cargando datos del proyecto: Startup Data 
## 🧹 Realizando limpieza de datos...
## 📊 Aplicando preprocesamiento específico para Startup Data...
## ✅ Preprocesamiento completado para: Startup Data

4️⃣ Cálculo de Probabilidades Condicionales

Analizamos la relación entre variables clave del éxito en startups.

📌 Probabilidad de Rentabilidad dado el Número de Rondas de Financiamiento

# Calcular probabilidades condicionales
resultados_financiamiento_vs_rentabilidad <- calcular_probabilidades(
  data = dataset_startup,
  condicionante = "funding_rounds",
  objetivo = "profitable",
  bins = 5  # Dividir en 5 intervalos
)

# Mostrar resultados
cat("Tabla de contingencia:\n")
## Tabla de contingencia:
print(resultados_financiamiento_vs_rentabilidad$tabla_contingencia)
## # A tibble: 10 × 3
##    funding_rounds profitable     n
##    <fct>          <fct>      <int>
##  1 1              0             64
##  2 1              1             45
##  3 2              0             51
##  4 2              1             46
##  5 3              0             63
##  6 3              1             42
##  7 4              0             57
##  8 4              1             27
##  9 5              0             49
## 10 5              1             56
cat("\nProbabilidades condicionales:\n")
## 
## Probabilidades condicionales:
print(resultados_financiamiento_vs_rentabilidad$probabilidades_condicionales)
## # A tibble: 10 × 4
##    funding_rounds profitable     n prob_condicional
##    <fct>          <fct>      <int>            <dbl>
##  1 1              0             64            0.587
##  2 1              1             45            0.413
##  3 2              0             51            0.526
##  4 2              1             46            0.474
##  5 3              0             63            0.6  
##  6 3              1             42            0.4  
##  7 4              0             57            0.679
##  8 4              1             27            0.321
##  9 5              0             49            0.467
## 10 5              1             56            0.533
cat("\nProbabilidades marginales de rentabilidad:\n")
## 
## Probabilidades marginales de rentabilidad:
print(resultados_financiamiento_vs_rentabilidad$probabilidades_marginales)
## # A tibble: 2 × 3
##   profitable     n prob_marginal
##   <fct>      <int>         <dbl>
## 1 0            284         0.568
## 2 1            216         0.432

📌 Probabilidad de Rentabilidad dado el Número de Empleados

# Calcular probabilidades condicionales
resultados_empleados_vs_rentabilidad <- calcular_probabilidades(
  data = dataset_startup,
  condicionante = "employees",
  objetivo = "profitable",
  bins = 5  # Dividir en 5 intervalos
)

# Mostrar resultados
cat("Tabla de contingencia:\n")
## Tabla de contingencia:
print(resultados_empleados_vs_rentabilidad$tabla_contingencia)
## # A tibble: 10 × 3
##    employees           profitable     n
##    <fct>               <fct>      <int>
##  1 [7.03,1.01e+03]     0             53
##  2 [7.03,1.01e+03]     1             37
##  3 (1.01e+03,2e+03]    0             50
##  4 (1.01e+03,2e+03]    1             44
##  5 (2e+03,3e+03]       0             63
##  6 (2e+03,3e+03]       1             48
##  7 (3e+03,3.99e+03]    0             73
##  8 (3e+03,3.99e+03]    1             49
##  9 (3.99e+03,4.99e+03] 0             45
## 10 (3.99e+03,4.99e+03] 1             38
cat("\nProbabilidades condicionales:\n")
## 
## Probabilidades condicionales:
print(resultados_empleados_vs_rentabilidad$probabilidades_condicionales)
## # A tibble: 10 × 4
##    employees           profitable     n prob_condicional
##    <fct>               <fct>      <int>            <dbl>
##  1 [7.03,1.01e+03]     0             53            0.589
##  2 [7.03,1.01e+03]     1             37            0.411
##  3 (1.01e+03,2e+03]    0             50            0.532
##  4 (1.01e+03,2e+03]    1             44            0.468
##  5 (2e+03,3e+03]       0             63            0.568
##  6 (2e+03,3e+03]       1             48            0.432
##  7 (3e+03,3.99e+03]    0             73            0.598
##  8 (3e+03,3.99e+03]    1             49            0.402
##  9 (3.99e+03,4.99e+03] 0             45            0.542
## 10 (3.99e+03,4.99e+03] 1             38            0.458
cat("\nProbabilidades marginales de rentabilidad:\n")
## 
## Probabilidades marginales de rentabilidad:
print(resultados_empleados_vs_rentabilidad$probabilidades_marginales)
## # A tibble: 2 × 3
##   profitable     n prob_marginal
##   <fct>      <int>         <dbl>
## 1 0            284         0.568
## 2 1            216         0.432

📌 Probabilidad de Alto Revenue dado un Market Share Elevado

# Calcular probabilidades condicionales
resultados_marketshare_vs_revenue <- calcular_probabilidades(
  data = dataset_startup,
  condicionante = "market_share_percent",
  objetivo = "revenue_m_usd",
  bins = 5  # Dividir en 5 intervalos
)

# Mostrar resultados
cat("Tabla de contingencia:\n")
## Tabla de contingencia:
print(resultados_marketshare_vs_revenue$tabla_contingencia)
## # A tibble: 25 × 3
##    market_share_percent revenue_m_usd     n
##    <fct>                <fct>         <int>
##  1 [0.0901,2.08]        [0.0204,20]      23
##  2 [0.0901,2.08]        (20,40]          15
##  3 [0.0901,2.08]        (40,59.9]        15
##  4 [0.0901,2.08]        (59.9,79.8]      18
##  5 [0.0901,2.08]        (79.8,99.8]      15
##  6 (2.08,4.06]          [0.0204,20]      21
##  7 (2.08,4.06]          (20,40]          21
##  8 (2.08,4.06]          (40,59.9]        20
##  9 (2.08,4.06]          (59.9,79.8]      14
## 10 (2.08,4.06]          (79.8,99.8]      23
## # ℹ 15 more rows
cat("\nProbabilidades condicionales:\n")
## 
## Probabilidades condicionales:
print(resultados_marketshare_vs_revenue$probabilidades_condicionales)
## # A tibble: 25 × 4
##    market_share_percent revenue_m_usd     n prob_condicional
##    <fct>                <fct>         <int>            <dbl>
##  1 [0.0901,2.08]        [0.0204,20]      23            0.267
##  2 [0.0901,2.08]        (20,40]          15            0.174
##  3 [0.0901,2.08]        (40,59.9]        15            0.174
##  4 [0.0901,2.08]        (59.9,79.8]      18            0.209
##  5 [0.0901,2.08]        (79.8,99.8]      15            0.174
##  6 (2.08,4.06]          [0.0204,20]      21            0.212
##  7 (2.08,4.06]          (20,40]          21            0.212
##  8 (2.08,4.06]          (40,59.9]        20            0.202
##  9 (2.08,4.06]          (59.9,79.8]      14            0.141
## 10 (2.08,4.06]          (79.8,99.8]      23            0.232
## # ℹ 15 more rows
cat("\nProbabilidades marginales de revenue:\n")
## 
## Probabilidades marginales de revenue:
print(resultados_marketshare_vs_revenue$probabilidades_marginales)
## # A tibble: 5 × 3
##   revenue_m_usd     n prob_marginal
##   <fct>         <int>         <dbl>
## 1 [0.0204,20]     108         0.216
## 2 (20,40]          98         0.196
## 3 (40,59.9]        92         0.184
## 4 (59.9,79.8]     102         0.204
## 5 (79.8,99.8]     100         0.2

5️⃣ Visualización de Resultados

📌 Probabilidad de Rentabilidad según el Número de Rondas de Financiamiento

p_financiamiento_vs_rentabilidad <- visualizar_probabilidad_condicional(
  data = dataset_startup,
  condicionante = "funding_rounds",
  objetivo = "profitable",
  titulo = "Análisis Rentabilidad según el Número de Rondas de Financiamiento",
  xlab = "Número de Rondas de Financiamiento",
  guardar = TRUE,
  ruta_guardado = here("reportes/Proy_Startup_Data/resultados_generados/probabilidad_condicional_financiamiento_vs_rentabilidad.png"),
  bins = 5
)

# Mostrar gráfico interactivo
p_financiamiento_vs_rentabilidad

📌 Probabilidad de Rentabilidad según el Número de Empleados

p_empleados_vs_rentabilidad <- visualizar_probabilidad_condicional(
  data = dataset_startup,
  condicionante = "employees",
  objetivo = "profitable",
  titulo = "Probabilidad de Rentabilidad según el Número de Empleados",
  xlab = "Número de Empleados (Intervalos)",
  guardar = TRUE,
  ruta_guardado = here("reportes/Proy_Startup_Data/resultados_generados/probabilidad_condicional_empleados_vs_rentabilidad.png"),
  bins = 5
)

# Mostrar gráfico interactivo
p_empleados_vs_rentabilidad

📌 Probabilidad de Alto Revenue según Market Share

p_marketshare_vs_revenue <- visualizar_probabilidad_condicional(
  data = dataset_startup,
  condicionante = "market_share_percent",
  objetivo = "revenue_m_usd",
  titulo = "Probabilidad de Alto Revenue según Market Share",
  xlab = "Market Share (%)",
  guardar = TRUE,
  ruta_guardado = here("reportes/Proy_Startup_Data/resultados_generados/probabilidad_condicional_marketshare_vs_revenue.png"),
  bins = 5
)

# Mostrar gráfico interactivo
p_marketshare_vs_revenue